import axios from "axios";
import store from "@/store";
import { Message } from "element-ui";
import router from "@/router";
const server = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 20000,
})
//请求拦截器
server.interceptors.request.use((config) => {
    //获取token
    //store.getters.token
    //将token放到请求头中
    //先判断是否有token 有就设置请求头 没有就跳转到登录页面
    if(store.getters.token){
      config.headers.Authorization = `Bearer ${store.getters.token}`
    }
  return config
}, (err) => {
  //失败直接返回一个Promise.reject(err)
  return Promise.reject(err)
})
//响应拦截器
server.interceptors.response.use((response) => {
  //单独处理导出excel时传来的数据时Blob类型
  if(response.data instanceof Blob) return response.data
  const {data,success,message} =response.data//默认是json数据格式
  if(success) return data
  else {
    Message({
      type:'error',
      message:message
    })
   return Promise.reject(new Error(message))
  } 
}, async(err) => {
  if(err.response.status===401){
    Message({
      type:'error',
      message:'token校验失败'
    })
    //store.dispatch是个异步操作 要等强制退出登录函数执行完成后在跳转
    await  store.dispatch('user/logout') //调用退出登录的action
      router.replace('/login')//跳转到登录页
      return  Promise.reject(err)
  }
  Message({
    type:'error',
    message:err.message
  })
  Promise.reject(err)
})
export default server
